perm filename MET5.LSP[TIM,LSP] blob sn#717381 filedate 1983-06-18 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	(declare (fasload meter)
C00005 ENDMK
CāŠ—;
(declare (fasload meter)
	 (load "metint.lsp")
	 (setq meter:count-only ()))
(declare 
 (setq local-objects-of-interest ()))

(DECLARE (MAPEX T))

(meter:meter deriv
 (meter-funs #.(all-objs)
	     (DEFUN DER1 (A) 
		    (mn "DER1" der1)
		    (mn "Conses" cons 3)
		    (LIST 'QUOTIENT (DERIV A) A)))

 (meter-funs #.(all-objs)
(DEFUN DERIV (A)
       (mn "DERIV" deriv)
	(COND 
	 ((ATOM A)
	  (COND ((EQ A 'X) 1) (T 0)))
	 ((EQ (CAR A) 'PLUS)	
	  (mn "Conses" cons (length a))
	  (CONS 'PLUS (MAPCAR 'DERIV (CDR A))))
	 ((EQ (CAR A) 'DIFFERENCE) 
	  (mn "Conses" cons (length a))
	  (CONS 'DIFFERENCE (MAPCAR 'DERIV 
				    (CDR A))))
	 ((EQ (CAR A) 'TIMES)
	  (mn "Conses" cons (+ 3  (length a)))
	  (LIST 'TIMES 
		A 
		(CONS 'PLUS (MAPCAR 'DER1 (CDR A)))))
	 ((EQ (CAR A) 'QUOTIENT)
	  (mn "Conses" cons 13.)
	  (LIST 'DIFFERENCE 
		(LIST 'QUOTIENT 
		      (DERIV (CADR A)) 
		      (CADDR A))
		(LIST 'QUOTIENT 
		      (CADR A) 
		      (LIST 'TIMES
			    (CADDR A)
			    (CADDR A)
			    (DERIV (CADDR A))))))
	 (T 'ERROR))))

 (meter-funs #.(all-objs)
(DEFUN RUN ()
 (DECLARE (FIXNUM I))
 (DO ((I 0 (1+ I)))
     ((= I 1000.))
     (DERIV '(PLUS (TIMES 3 X X) (TIMES A X X) (TIMES B X) 5))
     (DERIV '(PLUS (TIMES 3 X X) (TIMES A X X) (TIMES B X) 5))
     (DERIV '(PLUS (TIMES 3 X X) (TIMES A X X) (TIMES B X) 5))
     (DERIV '(PLUS (TIMES 3 X X) (TIMES A X X) (TIMES B X) 5))
     (DERIV '(PLUS (TIMES 3 X X) (TIMES A X X) (TIMES B X) 5))))))